import { createFetch } from '@vueuse/core'

// API 类型定义
export interface Todo {
  _id: string
  title: string
  content: string
  completed: boolean
  createTime: number
  updateTime?: number
}

export interface ApiResponse<T> {
  status: 'success' | 'error'
  data: T
  message?: string
}

// API 请求参数类型
export interface AddTodoParams {
  title: string
  content?: string
}

export interface UpdateTodoParams {
  id: string
  updates: {
    title?: string
    content?: string
    completed?: boolean
  }
}

// 创建请求实例
export const useTodoFetch = createFetch({
  baseUrl: 'https://fc-mp-f5e52ff8-e93f-440d-8e32-673f5761e9e1.next.bspapp.com/todo',
  options: {
    beforeFetch({ options }) {
      options.headers = {
        'Content-Type': 'application/json',
        ...options.headers,
      }
      return { options }
    },
  },
})

// API 方法
export const todoApi = {
  // 获取待办列表
  getTodos() {
    return useTodoFetch('/todoget').json<ApiResponse<Todo[]>>()
  },

  // 添加待办
  addTodo(params: AddTodoParams) {
    return useTodoFetch('/todoadd')
      .post(params)
      .json<ApiResponse<{ _id: string; inserted: number }>>()
  },

  // 更新待办
  updateTodo(params: UpdateTodoParams) {
    return useTodoFetch('/todoupdate').post(params).json<ApiResponse<{ updated: number }>>()
  },

  // 删除待办
  deleteTodo(id: string) {
    return useTodoFetch('/todoremove').post({ id }).json<ApiResponse<{ deleted: number }>>()
  },
}
